iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
自我挑戰組

C語言救救我系列 第 6

Day6-"while、do-while"

  • 分享至 

  • xImage
  •  

Day4有跟大家提到for迴圈,但並非所有條件都必須用for迴圈來寫,這個時候我們就可以利用while跟do-while來撰寫

break敘述用來強制跳出迴圈,在無窮迴圈就必須配合break來跳離迴圈

continue則是用來略過此次迴圈中尚未執行的部分,直接回到迴圈頂端

while迴圈中可包含其他迴圈,變成多重迴圈

下面來看其範例

這個是只有一個的while的迴圈

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("請輸入正數數值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
		
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711ZLklfYH7o9.png


這是發生無窮迴圈的部分,我們將條件設為只要i>1就要進去執行,但i的值為3就代表一直符合條件,因此產生了無窮迴圈

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("請輸入正數數值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/2014171111T8xdmOMG.png


這個是無窮迴圈但我們利用break來強制跳出迴圈

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("請輸入正數數值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
		break;
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711kJL4FFk4Sv.png


這個是利用continue直接回到迴圈頂端,因此並未執行印出x值的這行

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("請輸入正數數值\n");
	scanf("%d",&i);
	printf("\n");
	while(i>1)
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		continue;
		printf("x = %d\n\n",x);
	}
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711WXoJfEsn8l.png


do-while是在不使用breakc和continue的敘述下,至少會執行程式一次。

while的條件運算式後面規定必須出現分號,為了是幫助編譯程式判斷是while迴圈的關鍵字還是do-while迴圈的關鍵字

下面來看其範例

這個是i還符合條件因此要進去迴圈執行

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("請輸入正數數值\n");
	scanf("%d",&i);
	printf("\n");
	do
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
	}
	while(i>1);
}

https://ithelp.ithome.com.tw/upload/images/20210913/201417112qkFInyvPb.png


這個是i不符合條件,但因為do-while所以至少會執行一次

#include <stdio.h>
#include <stdlib.h>

void main(void)
{
	int i;
	int x;
	printf("請輸入正數數值\n");
	scanf("%d",&i);
	printf("\n");
	do
	{
		x=i*2;
		i=i-1;
		printf("i = %d\n\n",i);
		printf("x = %d\n\n",x);
	}
	while(i<1);
}

https://ithelp.ithome.com.tw/upload/images/20210913/20141711cYCyPq5fD7.png

/images/emoticon/emoticon29.gif

Day6就到這啦BYE~


上一篇
Day5-"颱風天還是要練習吧"
下一篇
Day7-"常數"
系列文
C語言救救我30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言